package cn.com.anypay.manager.common.validation;

import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.*;

/**
 * 邮箱格式验证注解
 * 验证邮箱地址是否符合标准格式
 */
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = EmailFormatValidator.class)
public @interface EmailFormat {

    String message() default "邮箱格式错误：请输入有效的邮箱地址";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    /**
     * 是否允许为空（默认不允许）
     */
    boolean allowEmpty() default false;

    /**
     * 邮箱验证类型
     */
    EmailType type() default EmailType.STANDARD;

    /**
     * 是否允许国际化域名
     */
    boolean allowInternationalDomain() default true;

    /**
     * 邮箱类型枚举
     */
    enum EmailType {
        STANDARD,    // 标准邮箱格式
        STRICT,      // 严格邮箱格式
        SIMPLE       // 简单邮箱格式
    }
}